<!DOCTYPE html>
<html lang="en">
<head>
    <#include "WEB-INF/view/_frag/_meta.ftl">
    <title>Nature FrameWork</title>
    <#include "WEB-INF/view/_frag/_jscss.ftl">
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="container">
        <div class="navbar-header">
            <a class="navbar-brand" href="#">Nature FrameWork
                <small><em>&nbsp;&nbsp;not only easy and fast.</em></small>
            </a>
        </div>
        <div class="navbar-right">
        <#if current_user.username=null>
         	<form class=" navbar-form" role="search" method="post" action="user/login">
			  <div class="form-group">
			    <input type="text" class="form-control" name="user.username" placeholder="username">
			    <input type="text" class="form-control" name="user.password" placeholder="password">
			     <label class="navbar-link">
				      <input type="checkbox" name="user.rememberMe"  value="true">记住我
				    </label>
			  </div>
			  <button type="submit" class="btn btn-default">sign</button>
			</form>
			<#else>
			<p class="navbar-text">${current_user.username}</p><a class="navbar-link navbar-text" href="user/logout">退出</a>
			</#if>
		</div>
    </div>
</nav>

<div class="jumbotron">
    <div class="container">
        <h1>Nature FrameWork</h1>
        <p>Nature FrameWork 是一个适合极速开发的，完整的MVC框架；其中包括控制层、模型层、展示层，框架使用中无需冗余的get/set方法，只需通过简单的配置即可使用。
            框架支持自定义全局拦截器，控制层拦截器，支持声明式事务，支持IOC，支持国际化i18n，内置ehcache数据缓存，FreeMarker和jsp模板引擎可以直接使用。后期将会增加支持redis缓存，
            权限控制，SAOP，单点登录等。</p>
        <footer class="pull-right text-muted">
            <em>不会写框架的程序员不是个好男人———尼古拉斯·赵四</em>
        </footer>
        <div class="clearfix"></div>
        <p class="text-center"><a class="btn btn-primary btn-lg" href="user/list" role="button">查看实例 &raquo;</a></p>
    </div>
</div>

<div class="container">
    <div>
        <blockquote>
            <h2>实体类</h2>
        </blockquote>
        <p>1、实体类，无需GET/SET方法，只需声明数据库字段的名称</p>

        <p> 2、使用注解控制指定主键@id,支持ADDSELF（数据库自增长）、UUID（框架维护）、ASSIGN（程序员指定id）</p>

        <p> 3、@Type：按照JAVA语言的基本类型进行设定，无需考虑数据库的字段，还支持默认值，长度设定等，简单快捷</p>
    </div>
    <div class="text-info">
        <blockquote>
            <h2>服务类</h2>
        </blockquote>
        <p> 1、服务类，为了开发简单可以继承框架中的NatureService（非必需），添加@Service注解即可</p>

        <p> 2、事物控制可以通过@Tx进行急速实现</p>

        <p> 3、如果某些业务多读少写则建议使用缓存，使用方法只需传入缓存名称即可，如果缓存有配置则使用，否则使用默认配置。</p>

        <p> 4、所有业务逻辑建议放在Service层</p>
    </div>
    <div class="text-success">
        <blockquote>
            <h2>控制类</h2>
        </blockquote>
        <p> 1、创建控制层继承NatureCtrl类并增加@Ctrl注解即可</p>

        <p> 2、类@Ctrl的namespace是控制层的命名空间，所有本控制层的请求都要通过namespace</p>

        <p> 3、属性@Inject注解是注入Service实例</p>

        <p> 4、方法@Ask注解是对方法的映射，如果不写url则默认映射为方法名；与namespace共同组成请求路径/namespace/list</p>

        <p> 5、返回支持直接返回页面"xxx.jsp",返回方法"xxx",返回JSON数据 JsonData,返回下载文件FileData等，绝对的简单快捷</p>

        <p> 6、在控制层需要页面传值的只需声明public类型变量即可，无需冗长的GET/SET

        <p>

        <p> 7、如需上传文件，控制层直接声明File类型变量即可，支持多文件集合上传，就像接受普通变量一样简单</p>

    </div>
    <hr>
   <#include "WEB-INF/view/_frag/_footer.ftl">
</div>
<!-- /container -->
</body>
</html>